ICO Data object example


In [1]:
import ICO
import os
import pandas as pd
import time

The Data object is initialized with the path to the directory of .pickle files. On creation it reads in the pickle files, but does not transform the data.


In [2]:
data = ICO.Data(os.getcwd()+'/data/')

The data object can be accessed like a dictionary to the underlying Dataframes. These will be transformed on their first access into a normalized form. (This might take awhile for the first access)


In [3]:
start = time.time()
data["all_encounter_data"]
print(time.time() - start)


ICO.py:129: UserWarning: This pattern has match groups. To actually get the groups, use str.extract.
  dEI[diagnosis]=dEI["Diagnosis_Code_ID"].str.contains(pattern)
74.3628649712

In [4]:
data["all_encounter_data"].describe(include='all')


Out[4]:
Enc_Date Person_Nbr Primary_Payer Smoking_Status MR_OD_SPH MR_OD_CYL MR_OD_AXIS MR_OD_DVA MR_OD_NVA MR_OS_SPH ... ME MNPDR DM SNPDR Glaucoma_Suspect mNPDR Open_angle_Glaucoma PDR Cataract DR_diagnosis
count 61862 6.186200e+04 61862 57359 24558 23803 19179 23300 17456 24541 ... 61862 61862 61862 61862 61862 61862 61862 61862 61862 61862
unique 51745 NaN 86 9 190 66 249 290 219 194 ... 2 2 2 2 2 2 2 2 2 5
top 2016-05-23 06:15:00 NaN Medicare Never smoker PL Sph 090 20/20 20/20 PL ... False False False False False False False False False no_DR
freq 5 NaN 23199 30865 2283 4597 2674 12685 11384 2283 ... 59054 59850 32358 60955 51093 57307 52221 58186 45829 51311
first 2011-10-28 23:00:00 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
last 2016-11-03 23:15:00 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
mean NaN 5.231971e+05 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
std NaN 3.011000e+05 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
min NaN 3.300000e+01 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
25% NaN 2.626995e+05 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
50% NaN 5.159770e+05 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
75% NaN 7.823740e+05 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
max NaN 1.048528e+06 NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

13 rows × 57 columns


In [5]:
data["all_encounter_data"].columns.values


Out[5]:
array(['Enc_Date', 'Person_Nbr', 'Primary_Payer', 'Smoking_Status',
       'MR_OD_SPH', 'MR_OD_CYL', 'MR_OD_AXIS', 'MR_OD_DVA', 'MR_OD_NVA',
       'MR_OS_SPH', 'MR_OS_CYL', 'MR_OS_AXIS', 'MR_OS_DVA', 'MR_OS_NVA',
       'BB_OD_SPH', 'BB_OD_CYL', 'BB_OD_AXIS', 'BB_OD_DVA', 'BB_OD_NVA',
       'BB_OS_SPH', 'BB_OS_CYL', 'BB_OS_AXIS', 'BB_OS_DVA', 'BB_OS_NVA',
       'CYCLO_OD_SPH', 'CYCLO_OD_CYL', 'CYCLO_OD_AXIS', 'CYCLO_OD_DVA',
       'CYCLO_OD_NVA', 'CYCLO_OS_SPH', 'CYCLO_OS_CYL', 'CYCLO_OS_AXIS',
       'CYCLO_OS_DVA', 'CYCLO_OS_NVA', 'A1C', 'BMI', 'Glucose',
       'BP_Diastolic', 'BP_Systolic', 'MR_OD_SPH_Numeric',
       'MR_OD_CYL_Numeric', 'MR_OS_SPH_Numeric', 'MR_OS_CYL_Numeric',
       'MR_OS_DVA_ability', 'MR_OD_DVA_ability', 'MR_OS_NVA_ability',
       'MR_OD_NVA_ability', 'ME', 'MNPDR', 'DM', 'SNPDR',
       'Glaucoma_Suspect', 'mNPDR', 'Open_angle_Glaucoma', 'PDR',
       'Cataract', 'DR_diagnosis'], dtype=object)

In [6]:
data['all_encounter_data'].shape[0]


Out[6]:
61862

In [12]:
data['all_encounter_data'].to_pickle('all_encounter_data_Dan_20170415.pickle')

In [8]:
start = time.time()
data["all_person_data"]
print(time.time() - start)


104.224082947

In [9]:
data["all_person_data"].describe(include='all')


Out[9]:
DOB Gender Race A1C BMI Glucose BP_Systolic BP_Diastolic MR_OD_SPH_Numeric MR_OD_CYL_Numeric ... MNPDR PDR SNPDR mNPDR Glaucoma_Suspect Open_angle_Glaucoma Cataract worst_DR recent_DR Age
count 16039 16039 16039 4708.000000 6472.000000 10178.000000 14358.000000 14374.000000 10644.000000 9256.000000 ... 16039 16039 16039 16039 16039 16039 16039 16039 16039 16039.000000
unique 10735 3 5 NaN NaN NaN NaN NaN NaN NaN ... 2 2 2 2 2 2 2 5 5 NaN
top 1961-03-18 00:00:00 F Black or African American NaN NaN NaN NaN NaN NaN NaN ... False False False False False False False no_DR no_DR NaN
freq 7 10236 9780 NaN NaN NaN NaN NaN NaN NaN ... 15099 14999 15689 13421 12439 14554 9170 12009 12009 NaN
first 1901-01-06 00:00:00 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
last 1998-03-23 00:00:00 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
mean NaN NaN NaN 7.235485 31.864823 131.677803 133.611368 78.109281 0.270407 -0.909780 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 61.390423
std NaN NaN NaN 1.241573 6.782216 32.121431 17.023775 10.384908 1.770672 0.504352 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 13.806935
min NaN NaN NaN 3.900000 14.395000 40.000000 87.000000 48.000000 -4.500000 -2.250000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 18.000000
25% NaN NaN NaN 6.300000 26.880000 109.500000 122.000000 70.675000 -0.750000 -1.250000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 53.000000
50% NaN NaN NaN 7.000000 31.170000 127.000000 132.000000 78.000000 0.500000 -0.750000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 61.000000
75% NaN NaN NaN 8.000000 36.112500 150.000000 144.000000 85.000000 1.500000 -0.500000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 71.000000
max NaN NaN NaN 10.600000 50.500000 222.000000 181.000000 107.000000 5.000000 0.500000 ... NaN NaN NaN NaN NaN NaN NaN NaN NaN 114.000000

13 rows × 32 columns


In [10]:
data["all_person_data"].columns.values


Out[10]:
array(['DOB', 'Gender', 'Race', 'A1C', 'BMI', 'Glucose', 'BP_Systolic',
       'BP_Diastolic', 'MR_OD_SPH_Numeric', 'MR_OD_CYL_Numeric',
       'MR_OS_SPH_Numeric', 'MR_OS_CYL_Numeric', 'MR_OS_DVA_ability',
       'MR_OD_DVA_ability', 'MR_OS_NVA_ability', 'MR_OD_NVA_ability',
       'Last_Encounter', 'recent_smoking_status', 'family_DM', 'family_G',
       'DM', 'ME', 'MNPDR', 'PDR', 'SNPDR', 'mNPDR', 'Glaucoma_Suspect',
       'Open_angle_Glaucoma', 'Cataract', 'worst_DR', 'recent_DR', 'Age'], dtype=object)

In [11]:
data['all_person_data'].shape[0]


Out[11]:
16039

In [13]:
data['all_person_data'].to_pickle('all_person_data_Dan_20170415.pickle')

In [ ]: